home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / f2c / may_5_92.lha / f2c.VMay_5_1992 / libI77 / iio.c < prev    next >
C/C++ Source or Header  |  1992-05-07  |  2KB  |  118 lines

  1. #include "f2c.h"
  2. #include "fio.h"
  3. #include "fmt.h"
  4. extern char *icptr;
  5. char *icend;
  6. extern icilist *svic;
  7. extern int rd_ed(),rd_ned(),w_ed(),w_ned(),y_ierr();
  8. extern int z_wnew();
  9. int icnum;
  10. extern int hiwater;
  11. z_getc()
  12. {
  13.     if(recpos++ < svic->icirlen) {
  14.         if(icptr >= icend) err(svic->iciend,(EOF),"endfile");
  15.         return(*icptr++);
  16.         }
  17.     err(svic->icierr,110,"recend");
  18. }
  19. z_putc(c)
  20. {
  21.     if(icptr >= icend) err(svic->icierr,110,"inwrite");
  22.     if(recpos++ < svic->icirlen)
  23.         *icptr++ = c;
  24.     else    err(svic->icierr,110,"recend");
  25.     return 0;
  26. }
  27. z_rnew()
  28. {
  29.     icptr = svic->iciunit + (++icnum)*svic->icirlen;
  30.     recpos = 0;
  31.     cursor = 0;
  32.     hiwater = 0;
  33.     return 1;
  34. }
  35.  
  36.  static int
  37. z_endp(a) icilist *a;
  38. {
  39.     (*donewrec)();
  40.     return 0;
  41.     }
  42.  
  43. integer s_rsfi(a) icilist *a;
  44. {    int n;
  45.     if(n=c_si(a)) return(n);
  46.     reading=1;
  47.     doed=rd_ed;
  48.     doned=rd_ned;
  49.     getn=z_getc;
  50.     dorevert = y_ierr;
  51.     donewrec = z_rnew;
  52.     doend = z_endp;
  53.     return(0);
  54. }
  55.  
  56. integer s_wsfi(a) icilist *a;
  57. {    int n;
  58.     if(n=c_si(a)) return(n);
  59.     reading=0;
  60.     doed=w_ed;
  61.     doned=w_ned;
  62.     putn=z_putc;
  63.     dorevert = y_ierr;
  64.     donewrec = z_wnew;
  65.     doend = z_endp;
  66.     return(0);
  67. }
  68. c_si(a) icilist *a;
  69. {
  70.     elist = (cilist *)a;
  71.     fmtbuf=a->icifmt;
  72.     if(pars_f(fmtbuf)<0)
  73.         err(a->icierr,100,"startint");
  74.     fmt_bg();
  75.     sequential=formatted=1;
  76.     external=0;
  77.     cblank=cplus=scale=0;
  78.     svic=a;
  79.     icnum=recpos=0;
  80.     cursor = 0;
  81.     hiwater = 0;
  82.     icptr = a->iciunit;
  83.     icend = icptr + a->icirlen*a->icirnum;
  84.     curunit = 0;
  85.     return(0);
  86. }
  87. z_wnew()
  88. {
  89.     while(recpos++ < svic->icirlen)
  90.         *icptr++ = ' ';
  91.     recpos = 0;
  92.     cursor = 0;
  93.     hiwater = 0;
  94.     icnum++;
  95.     return 1;
  96. }
  97. integer e_rsfi()
  98. {    int n;
  99.     n = en_fio();
  100.     fmtbuf = NULL;
  101.     return(n);
  102. }
  103. integer e_wsfi()
  104. {
  105.     int n;
  106.     n = en_fio();
  107.     fmtbuf = NULL;
  108.     if(icnum >= svic->icirnum)
  109.         return(n);
  110.     while(recpos++ < svic->icirlen)
  111.         *icptr++ = ' ';
  112.     return(n);
  113. }
  114. y_ierr()
  115. {
  116.     err(elist->cierr, 110, "iio");
  117. }
  118.